;-----------------------Modified cam-clayģ-------------------------------
model cam-clay
;cam-clayģ趨嵯ģ(EGK)ȲԶ
;cam-clayģȷ8ģͲ(-)ֲpropertyеĳʼcv(v0)shear
def install_prop
  pnt=zone_head
  loop while pnt # null
    abs_sxx=abs(z_sxx(pnt))          ;|sxx|
    abs_syy=abs(z_syy(pnt))          ;|syy|
    abs_szz=abs(z_szz(pnt))          ;|szz|
    p0=(abs_sxx+abs_syy+abs_szz)/3.0  
    ;cam-clayģpqΪֵp0ɳӦȷcam-clamģͲǰ֪Ӧ
    p0_effective=p0-z_pp(pnt)            ;p0'
    q0=sqrt(((abs_sxx-abs_syy)^2+(abs_syy-abs_szz)^2+(abs_szz-abs_sxx)^2)*0.5)
    z_prop(pnt,'mm')=6.0*sin(fai*degrad)/(3.0-sin(fai*degrad))  ;עǺ轫ǶתΪ  
    temp1=q0/(z_prop(pnt,'mm')*p0_effective)
    pc0=p0_effective*(1.0+temp1^2)*OCR  ;Ч̽ѹȷ
    v0=1.0+_e0
    z_prop(pnt,'cam_cp')=p0_effective    ;ҪȷЧӦʾ"Mean effective pressure is negative"
    z_prop(pnt,'mpc')=pc0              ;
    z_prop(pnt,'poisson')=p_ratio        ;
    z_prop(pnt,'lambda')=_lambda        ;
    z_prop(pnt,'kappa')=_kappa          ;
    z_prop(pnt,'mp1')=_mp1            ;
    z_prop(pnt,'mv_l')=v0+_lambda*ln(2.0*_cu/(z_prop(pnt,'mm')*_mp1))+(_lambda-_kappa)*ln(2.0)    ;
    z_prop(pnt,'bulk_bound')=100*40e6    ;
    ;z_prop(pnt,'bulk_bound')=100*(s_mod+4.0/3.0*s_mod)  ;ģϽKmax
    ;ԶȷKmaxʱ֡property badʾ
    ;ΪϽԼӰ죬ڲʾKmax̫СԿ£ȡֵԽСԽ
    pnt=z_next(pnt)
  endloop
end
set p_ratio=0.35 fai=34.5 _lambda=0.14 _kappa=0.01 _mp1=1e3 _e0=1.2 _cu=10e3 OCR=1.0  ;ģ
install_prop
